package com.alks.function.mapper.produce;

import com.alks.entity.data.entity.PcCuttingDispatchDetail;
import com.alks.entity.data.entity.PcLotCutPartBag;
import com.alks.function.data.dto.produce.LabelPartNameDto;
import com.alks.function.data.dto.produce.PartListDto;
import com.alks.function.data.dto.produce.labelDto;
import com.alks.function.data.request.produce.LabelQueryRequest;
import com.alks.function.data.request.produce.LabelRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

@Mapper
public interface ComponentLabelMapper {

    /**
     * 查询指令轮次
     * @param request
     */
    List<labelDto> getComponentLabel(LabelQueryRequest request);

    /**
     * 查询客户集合
     * @return
     */
    @Select("SELECT DISTINCT CUSTOM AS custom FROM PC_LOT_HEAD WHERE CUSTOM IS NOT NULL")
    List<Map<String,String>> getCustomList();

    /**
     * 查询型体集合
     * @return
     */
    @Select("SELECT DISTINCT STYLE AS style FROM PC_LOT_HEAD WHERE STYLE IS NOT NULL")
    List<Map<String,String>>  getStyleList();

    /**
     * 查询标签明细
     * @param request
     */
    List<LabelPartNameDto> getLabelDetails(LabelRequest request);

    /**
     * 查询标签是否派工
     * @param lotNo
     * @param companyId
     */
    List<PcCuttingDispatchDetail> selectByLotNo(String lotNo, String companyId);

    /**
     * 删除针车数据表
     * @param companyId
     * @param lotNo
     */
    void delPcStitchPartStatus(String companyId, String lotNo);

    /**
     * 查询袋装定义数据
     * @param lotNo
     * @param companyId
     */
    List<PartListDto> getPartList(String lotNo, String companyId);

    /**
     * 删除袋装数量
     * @param lotNo
     * @param companyId
     */
    int delPcLotCutPartBag(String lotNo, String companyId);

    /**
     * 写入装袋数量
     * @param pcLotCutPartBag
     * @return
     */
    int addPcLotCutPartBag(PcLotCutPartBag pcLotCutPartBag);

    /**
     * 查询最大轮次
     * @param companyId
     * @param lotNo
     * @return
     */
    Integer loadMaxlsNo(String companyId, String lotNo);

    /**
     * 查询打印部件信息
     * @param partNames
     * @param lotNo
     * @param lsFrom
     * @param lsEnd
     * @param sizeNos
     * @param companyId
     */
    List<LabelPartNameDto> getPrintLabelList(@Param("partNames") List<String> partNames, @Param("lotNo") String lotNo, @Param("lsFrom") Integer lsFrom, @Param("lsEnd") Integer lsEnd, @Param("sizeNos") List<String> sizeNos, @Param("companyId") String companyId);

    Integer getPcLotCutPartBag(@Param("lotNo") String lotNo, @Param("companyId") String companyId, @Param("partName") String partName);
}
